//流的分类  双工流（能读能写 http） 

const { transform } = require('async');
const { Transform } = require('node:stream');
const {Writable} = require('stream');

//自己实现可实现 可写流
class MyWrite extends Writeable{
    _write(chunk,encoding,cb){
        console.log(chunk);
        cd();//clearBuffer
    }
}

let myWs = new MyWrite();

//我们可以继承一个类
class MyDuplex extends Duplex{//可以满足 读写的功能
    _read(){

    }
    _write(){

    }
}

//转化流 压缩、转码

//把输入转成大写再输出 把用户输入给输出了
// process.stdin.on("data",function (data) {//标准输入  |可读流
//     //console.log(data)
//     process.stdout.write(data);//标准输出
// });

//监听用户输入自动输出 
//在对输入的过程 进行一个转换操作，将输入的值，转换成大写的
class MyTransfrom extends Transform{
    _transform(){//参数和可写流一样
        chunk = chunk.toString().toUppercase();
        this.push(chunk);//相当于this.emit('data);
        cb();//执行下一个 不写的化就放到缓存里去了
    }
}
let transform = new MyTransform();
process.stdin.pipe(transform).pipe(process.stdou
    

//去 Node官网查看API

//二叉搜索树 1）树的遍历 反转二叉树